﻿/** layui-v2.5.4 MIT License By https://www.layui.com */ ;
layui.define("form",
	function(e) {
		"use strict";
		var i = layui.$,
			a = layui.form,
			n = "tree",
			r = {
				config: {},
				index: layui[n] ? layui[n].index + 1e4 : 0,
				set: function(e) {
					var a = this;
					return a.config = i.extend({},
							a.config, e),
						a
				},
				on: function(e, i) {
					return layui.onevent.call(this, n, e, i)
				}
			},
			l = function() {
				var e = this,
					i = e.config,
					a = i.id || e.index;
				return l.that[a] = e,
					l.config[a] = i, {
						config: i,
						reload: function(i) {
							e.reload.call(e, i)
						},
						getChecked: function() {
							return e.getChecked.call(e)
						},
						setChecked: function(i) {
							return e.setChecked.call(e, i)
						}
					}
			},
			t = "layui-hide",
			d = "layui-disabled",
			s = "layui-tree-set",
			c = "layui-tree-iconClick",
			o = "layui-icon-addition",
			h = "layui-icon-subtraction",
			u = "layui-tree-entry",
			f = "layui-tree-main",
			p = "layui-tree-txt",
			y = "layui-tree-pack",
			v = "layui-tree-spread",
			C = "layui-tree-setLineShort",
			m = "layui-tree-showLine",
			k = "layui-tree-lineExtend",
			g = function(e) {
				var a = this;
				a.index = ++r.index,
					a.config = i.extend({},
						a.config, r.config, e),
					a.render()
			};
		g.prototype.config = {
				data: [],
				showCheckbox: !1,
				showLine: !0,
				accordion: !1,
				onlyIconControl: !1,
				isJump: !1,
				edit: !1,
				text: {
					defaultNodeName: "未命名",
					none: "无数据"
				}
			},
			g.prototype.reload = function(e) {
				var a = this;
				layui.each(e,
						function(e, i) {
							i.constructor === Array && delete a.config[e]
						}),
					a.config = i.extend(!0, {},
						a.config, e),
					a.render()
			},
			g.prototype.render = function() {
				var e = this,
					a = e.config,
					n = i('<div class="layui-tree' + (a.showCheckbox ? " layui-form" : "") + (a.showLine ? " layui-tree-line" : "") + '" lay-filter="LAY-tree-' + e.index + '"></div>');
				e.tree(n);
				var r = a.elem = i(a.elem);
				if(r[0]) {
					if(a.showSearch && n.prepend('<input type="text" class="layui-input layui-tree-search" placeholder="请输入关键字进行过滤">'), e.key = a.id || e.index, e.elem = n, e.elemNone = i('<div class="layui-tree-emptyText">' + a.text.none + "</div>"), r.html(e.elem), 0 == e.elem.find(".layui-tree-set").length) return e.elem.append(e.elemNone);
					a.drag && e.drag(),
						a.showCheckbox && e.renderForm("checkbox"),
						e.elem.find(".layui-tree-set").each(function() {
							var e = i(this);
							e.parent(".layui-tree-pack")[0] || e.addClass("layui-tree-setHide"), !e.next()[0] && e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend") && e.addClass(C),
								e.next()[0] || e.parents(".layui-tree-set").eq(0).next()[0] || e.addClass(C)
						}),
						e.events()
				}
			},
			g.prototype.renderForm = function(e) {
				a.render(e, "LAY-tree-" + this.index)
			},
			g.prototype.tree = function(e, a) {
				var n = this,
					r = n.config,
					l = a || r.data;
				layui.each(l,
					function(a, l) {
						var c = l.children && l.children.length > 0,
							o = i('<div class="layui-tree-pack" ' + (l.spread ? 'style="display: block;"' : "") + '"></div>'),
							h = i(['<div data-id="' + l.id + '" class="layui-tree-set' + (l.spread ? " layui-tree-spread" : "") + (l.checked ? " layui-tree-checkedFirst" : "") + '">', "<div " + (r.drag && !l.fixed ? 'draggable="true"' : "") + ' class="layui-tree-entry">', '<div class="layui-tree-main">',
								function() {
									return r.showLine ? c ? '<span class="layui-tree-iconClick layui-tree-icon"><i class="layui-icon ' + (l.spread ? "layui-icon-subtraction" : "layui-icon-addition") + '"></i></span>' : '<span class="layui-tree-iconClick"><i class="layui-icon layui-icon-file"></i></span>' : '<span class="layui-tree-iconClick"><i class="layui-tree-iconArrow ' + (c ? "" : t) + '"></i></span>'
								}(),
								function() {
									return r.showCheckbox ? '<input type="checkbox" name="layuiTreeCheck" lay-skin="primary" ' + (l.disabled ? "disabled" : "") + '  value="' + l.id + '">' : ""
								}(),
								function() {
									return r.isJump && l.href ? '<a href="' + l.href + '" target="_blank" class="' + p + '">' + (l.title || l.label || r.text.defaultNodeName) + "</a>" : '<span class="' + p + (l.disabled ? " " + d : "") + '">' + (l.title || l.label || r.text.defaultNodeName) + "</span>"
								}(), "</div>",
								function() {
									if(!r.edit) return "";
									var e = {
											add: '<i class="layui-icon layui-icon-add-1"  data-type="add"></i>',
											update: '<i class="layui-icon layui-icon-edit" data-type="update"></i>',
											del: '<i class="layui-icon layui-icon-delete" data-type="del"></i>'
										},
										i = ['<div class="layui-btn-group layui-tree-btnGroup">'];
									return r.edit === !0 && (r.edit = ["update", "del"]),
										"object" == typeof r.edit ? (layui.each(r.edit,
											function(a, n) {
												i.push(e[n] || "")
											}), i.join("") + "</div>") : void 0
								}(), "</div></div>"
							].join(""));
						c && (h.append(o), n.tree(o, l.children)),
							e.append(h),
							h.prev("." + s)[0] && h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),
							c || h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),
							n.spread(h, l),
							r.showCheckbox && n.checkClick(h, l),
							r.edit && n.operate(h, l)
					})
			},
			g.prototype.spread = function(e, a) {
				var n = this,
					r = n.config,
					l = e.children("." + u),
					t = l.children("." + f),
					C = l.find("." + c),
					m = l.find("." + p),
					k = r.onlyIconControl ? C : t,
					g = "";
				k.on("click",
						function(i) {
							var a = e.children("." + y),
								n = k.children(".layui-icon")[0] ? k.children(".layui-icon") : k.find(".layui-tree-icon").children(".layui-icon");
							if(a[0]) {
								if(e.hasClass(v)) e.removeClass(v),
									a.slideUp(200),
									n.removeClass(h).addClass(o);
								else if(e.addClass(v), a.slideDown(200), n.addClass(h).removeClass(o), r.accordion) {
									var l = e.siblings("." + s);
									l.removeClass(v),
										l.children("." + y).slideUp(200),
										l.find(".layui-tree-icon").children(".layui-icon").removeClass(h).addClass(o)
								}
							} else g = "normal"
						}),
					m.on("click",
						function() {
							var n = i(this);
							n.hasClass(d) || (g = e.hasClass(v) ? r.onlyIconControl ? "open" : "close" : r.onlyIconControl ? "close" : "open", r.click && r.click({
								elem: e,
								state: g,
								data: a
							}))
						})
			},
			g.prototype.setCheckbox = function(e, i, a) {
				var n = this,
					r = (n.config, a.prop("checked"));
				if("object" == typeof i.children || e.find("." + y)[0]) {
					var l = e.find("." + y).find('input[name="layuiTreeCheck"]');
					l.each(function() {
						this.disabled || (this.checked = r)
					})
				}
				var t = function(e) {
					if(e.parents("." + s)[0]) {
						var i, a = e.parent("." + y),
							n = a.parent(),
							l = a.prev().find('input[name="layuiTreeCheck"]');
						r ? l.prop("checked", r) : (a.find('input[name="layuiTreeCheck"]').each(function() {
								this.checked && (i = !0)
							}), i || l.prop("checked", !1)),
							t(n)
					}
				};
				t(e),
					n.renderForm("checkbox")
			},
			g.prototype.checkClick = function(e, a) {
				var n = this,
					r = n.config,
					l = e.children("." + u),
					t = l.children("." + f);
				t.on("click", 'input[name="layuiTreeCheck"]+',
					function(l) {
						layui.stope(l);
						var t = i(this).prev(),
							d = t.prop("checked");
						t.prop("disabled") || (n.setCheckbox(e, a, t), r.oncheck && r.oncheck({
							elem: e,
							checked: d,
							data: a
						}))
					})
			},
			g.prototype.operate = function(e, a) {
				var n = this,
					r = n.config,
					l = e.children("." + u),
					d = l.children("." + f);
				l.children(".layui-tree-btnGroup").on("click", ".layui-icon",
					function(l) {
						layui.stope(l);
						var f = i(this).data("type"),
							g = e.children("." + y),
							x = {
								data: a,
								type: f,
								elem: e
							};
						treeMethod[f] ? treeMethod[f].call(x) : '';
//						if("add" == f) {
//
//							g[0] || (r.showLine ? (d.find("." + c).addClass("layui-tree-icon"), d.find("." + c).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : d.find(".layui-tree-iconArrow").removeClass(t), e.append('<div class="layui-tree-pack"></div>'));
//							var b = r.operate && r.operate(x),
//								w = {};
//							if(w.title = r.text.defaultNodeName, w.id = b, n.tree(e.children("." + y), [w]), r.showLine)
//								if(g[0]) g.hasClass(k) || g.addClass(k),
//									e.find("." + y).each(function() {
//										i(this).children("." + s).last().addClass(C)
//									}),
//									g.children("." + s).last().prev().hasClass(C) ? g.children("." + s).last().prev().removeClass(C) : g.children("." + s).last().removeClass(C), !e.parent("." + y)[0] && e.next()[0] && g.children("." + s).last().removeClass(C);
//								else {
//									var T = e.siblings("." + s),
//										L = 1,
//										N = e.parent("." + y);
//									layui.each(T,
//											function(e, a) {
//												i(a).children("." + y)[0] || (L = 0)
//											}),
//										1 == L ? (T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C), e.children("." + y).addClass(m), N.removeClass(k), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C)) : e.children("." + y).children("." + s).addClass(C)
//								}
//							if(!r.showCheckbox) return;
//							if(d.find('input[name="layuiTreeCheck"]')[0].checked) {
//								var A = e.children("." + y).children("." + s).last();
//								A.find('input[name="layuiTreeCheck"]')[0].checked = !0
//							}
//							n.renderForm("checkbox")
//
//						} else if("update" == f) {
//
//							var q = d.children("." + p).html();
//							d.children("." + p).html(""),
//								d.append('<input type="text" class="layui-tree-editInput">'),
//								d.children(".layui-tree-editInput").val(q).focus();
//							var F = function(e) {
//								var i = e.val().trim();
//								i = i ? i : r.text.defaultNodeName,
//									e.remove(),
//									d.children("." + p).html(i),
//									x.data.title = i,
//									r.operate && r.operate(x)
//							};
//							d.children(".layui-tree-editInput").blur(function() {
//									F(i(this))
//								}),
//								d.children(".layui-tree-editInput").on("keydown",
//									function(e) {
//										13 === e.keyCode && (e.preventDefault(), F(i(this)))
//									})
//
//						} else if("del" == f) {
//
//							if(r.operate && r.operate(x), x.status = "remove", !e.prev("." + s)[0] && !e.next("." + s)[0] && !e.parent("." + y)[0]) return e.remove(),
//								void n.elem.append(n.elemNone);
//							if(e.siblings("." + s).children("." + u)[0]) {
//								if(r.showCheckbox) {
//									var I = function(e) {
//										if(e.parents("." + s)[0]) {
//											var a = e.siblings("." + s).children("." + u),
//												r = e.parent("." + y).prev(),
//												l = r.find('input[name="layuiTreeCheck"]')[0],
//												t = 1,
//												d = 0;
//											0 == l.checked && (a.each(function(e, a) {
//												var n = i(a).find('input[name="layuiTreeCheck"]')[0];
//												0 != n.checked || n.disabled || (t = 0),
//													n.disabled || (d = 1)
//											}), 1 == t && 1 == d && (l.checked = !0, n.renderForm("checkbox"), I(r.parent("." + s))))
//										}
//									};
//									I(e)
//								}
//								if(r.showLine) {
//									var T = e.siblings("." + s),
//										L = 1,
//										N = e.parent("." + y);
//									layui.each(T,
//											function(e, a) {
//												i(a).children("." + y)[0] || (L = 0)
//											}),
//										1 == L ? (g[0] || (N.removeClass(k), T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C)), e.next()[0] ? N.children("." + s).last().children("." + y).children("." + s).last().addClass(C) : e.prev().children("." + y).children("." + s).last().addClass(C), e.next()[0] || e.parents("." + s)[1] || e.parents("." + s).eq(0).next()[0] || e.prev("." + s).addClass(C)) : !e.next()[0] && e.hasClass(C) && e.prev().addClass(C)
//								}
//							} else {
//								var H = e.parent("." + y).prev();
//								if(r.showLine) {
//									H.find("." + c).removeClass("layui-tree-icon"),
//										H.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file");
//									var S = H.parents("." + y).eq(0);
//									S.addClass(k),
//										S.children("." + s).each(function() {
//											i(this).children("." + y).children("." + s).last().addClass(C)
//										})
//								} else H.find(".layui-tree-iconArrow").addClass(t);
//								e.parents("." + s).eq(0).removeClass(v),
//									e.parent("." + y).remove()
//							}
//							e.remove()
//						}

					})
			},
			g.prototype.drag = function() {
				var e = this,
					a = e.config;
				e.elem.on("dragstart", "." + u,
						function() {
							var e = i(this).parent("." + s),
								n = e.parents("." + s)[0] ? e.parents("." + s).eq(0) : "未找到父节点";
							a.dragstart && a.dragstart(e, n)
						}),
					e.elem.on("dragend", "." + u,
						function(n) {
							var n = n || event,
								r = n.clientY,
								l = i(this),
								d = l.parent("." + s),
								f = d.height(),
								p = d.offset().top,
								g = e.elem.find("." + s),
								x = e.elem.height(),
								b = e.elem.offset().top,
								w = x + b - 13,
								T = d.parents("." + s)[0],
								L = d.next()[0];
							if(T) var N = d.parent("." + y),
								A = d.parents("." + s).eq(0),
								q = A.parent("." + y),
								F = A.offset().top,
								I = d.siblings(),
								H = A.children("." + y).children("." + s).length;
							var S = function(n) {
								if(T || L || e.elem.children("." + s).last().children("." + y).children("." + s).last().addClass(C), !T) return void d.removeClass("layui-tree-setHide");
								if(1 == H) a.showLine ? (n.find("." + c).removeClass("layui-tree-icon"), n.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file"), q.addClass(k), q.children("." + s).children("." + y).each(function() {
										i(this).children("." + s).last().addClass(C)
									})) : n.find(".layui-tree-iconArrow").addClass(t),
									n.children("." + y).remove(),
									n.removeClass(v);
								else {
									if(a.showLine) {
										var r = 1;
										layui.each(I,
												function(e, a) {
													i(a).children("." + y)[0] || (r = 0)
												}),
											1 == r ? (d.children("." + y)[0] || (N.removeClass(k), I.children("." + y).addClass(m), I.children("." + y).children("." + s).removeClass(C)), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C), L || n.parents("." + s)[0] || n.next()[0] || N.children("." + s).last().addClass(C)) : !L && d.hasClass(C) && N.children("." + s).last().addClass(C)
									}
									if(a.showCheckbox) {
										var l = function(a) {
											if(a) {
												if(!a.parents("." + s)[0]) return
											} else if(!n[0]) return;
											var r = a ? a.siblings().children("." + u) : I.children("." + u),
												t = a ? a.parent("." + y).prev() : N.prev(),
												d = t.find('input[name="layuiTreeCheck"]')[0],
												c = 1,
												o = 0;
											0 == d.checked && (r.each(function(e, a) {
												var n = i(a).find('input[name="layuiTreeCheck"]')[0];
												0 != n.checked || n.disabled || (c = 0),
													n.disabled || (o = 1)
											}), 1 == c && 1 == o && (d.checked = !0, e.renderForm("checkbox"), l(t.parent("." + s) || n)))
										};
										l()
									}
								}
							};
							g.each(function() {
								if(0 != i(this).height()) {
									if(r > p && r < p + f) return void(a.dragend && a.dragend("drag error"));
									if(1 == H && r > F && r < p + f) return void(a.dragend && a.dragend("drag error"));
									var n = i(this).offset().top;
									if(r > n && r < n + 15) {
										if(i(this).children("." + y)[0] || (a.showLine ? (i(this).find("." + c).eq(0).addClass("layui-tree-icon"), i(this).find("." + c).eq(0).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : i(this).find(".layui-tree-iconArrow").removeClass(t), i(this).append('<div class="layui-tree-pack"></div>')), i(this).children("." + y).append(d), S(A), a.showLine) {
											var l = i(this).children("." + y).children("." + s);
											if(d.children("." + y).children("." + s).last().addClass(C), 1 == l.length) {
												var h = i(this).siblings("." + s),
													v = 1,
													g = i(this).parent("." + y);
												layui.each(h,
														function(e, a) {
															i(a).children("." + y)[0] || (v = 0)
														}),
													1 == v ? (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), i(this).children("." + y).addClass(m), g.removeClass(k), g.children("." + s).last().children("." + y).children("." + s).last().addClass(C).removeClass("layui-tree-setHide")) : i(this).children("." + y).children("." + s).addClass(C).removeClass("layui-tree-setHide")
											} else d.prev("." + s).hasClass(C) ? (d.prev("." + s).removeClass(C), d.addClass(C)) : (d.removeClass("layui-tree-setLineShort layui-tree-setHide"), d.children("." + y)[0] ? d.prev("." + s).children("." + y).children("." + s).last().removeClass(C) : d.siblings("." + s).find("." + y).each(function() {
													i(this).children("." + s).last().addClass(C)
												})),
												i(this).next()[0] || d.addClass(C)
										}
										if(a.showCheckbox && i(this).children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
											var x = d.children("." + u);
											x.find('input[name="layuiTreeCheck"]+').click()
										}
										return a.dragend && a.dragend("drag success", d, i(this)), !1
									}
									if(r < n) {
										if(i(this).before(d), S(A), a.showLine) {
											var b = d.children("." + y),
												T = i(this).parents("." + s).eq(0),
												L = T.children("." + y).children("." + s).last();
											if(b[0]) {
												d.removeClass(C),
													b.children("." + s).last().removeClass(C);
												var h = d.siblings("." + s),
													v = 1;
												layui.each(h,
														function(e, a) {
															i(a).children("." + y)[0] || (v = 0)
														}),
													1 == v ? T[0] && (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), L.children("." + y).children("." + s).last().addClass(C).removeClass(m)) : d.children("." + y).children("." + s).last().addClass(C), !T.parent("." + y)[0] && T.next()[0] && L.removeClass(C)
											} else T.hasClass(k) || T.addClass(k),
												T.find("." + y).each(function() {
													i(this).children("." + s).last().addClass(C)
												});
											T[0] || (d.addClass("layui-tree-setHide"), d.children("." + y).children("." + s).last().removeClass(C))
										}
										if(T[0] && a.showCheckbox && T.children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
											var x = d.children("." + u);
											x.find('input[name="layuiTreeCheck"]+').click()
										}
										return a.dragend && a.dragend("拖拽成功，插入目标节点上方", d, i(this)), !1
									}
									if(r > w) return e.elem.children("." + s).last().children("." + y).addClass(m),
										e.elem.append(d),
										S(A),
										d.prev().children("." + y).children("." + s).last().removeClass(C),
										d.addClass("layui-tree-setHide"),
										d.children("." + y).children("." + s).last().addClass(C),
										a.dragend && a.dragend("拖拽成功，插入最外层节点", d, e.elem), !1
								}
							})
						})
			},
			g.prototype.events = function() {
				var e = this,
					a = e.config,
					n = e.elem.find(".layui-tree-checkedFirst");
				layui.each(n,
						function(e, a) {
							i(a).children("." + u).find('input[name="layuiTreeCheck"]+').trigger("click")
						}),
					e.elem.find(".layui-tree-search").on("keyup",
						function() {
							var n = i(this),
								r = n.val(),
								l = n.nextAll(),
								d = [];
							l.find("." + p).each(function() {
									var e = i(this).parents("." + u);
									if(i(this).html().indexOf(r) != -1) {
										d.push(i(this).parent());
										var a = function(e) {
											e.addClass("layui-tree-searchShow"),
												e.parent("." + y)[0] && a(e.parent("." + y).parent("." + s))
										};
										a(e.parent("." + s))
									}
								}),
								l.find("." + u).each(function() {
									var e = i(this).parent("." + s);
									e.hasClass("layui-tree-searchShow") || e.addClass(t)
								}),
								0 == l.find(".layui-tree-searchShow").length && e.elem.append(e.elemNone),
								a.onsearch && a.onsearch({
									elem: d
								})
						}),
					e.elem.find(".layui-tree-search").on("keydown",
						function() {
							i(this).nextAll().find("." + u).each(function() {
									var e = i(this).parent("." + s);
									e.removeClass("layui-tree-searchShow " + t)
								}),
								i(".layui-tree-emptyText")[0] && i(".layui-tree-emptyText").remove()
						})
			},
			g.prototype.getChecked = function() {
				var e = this,
					a = e.config,
					n = [],
					r = [];
				e.elem.find(".layui-form-checked").each(function() {
					n.push(i(this).prev()[0].value)
				});
				var l = function(e, a) {
					layui.each(e,
						function(e, r) {
							layui.each(n,
								function(e, n) {
									if(r.id == n) {
										var t = i.extend({},
											r);
										return delete t.children,
											a.push(t),
											r.children && (t.children = [], l(r.children, t.children)), !0
									}
								})
						})
				};
				return l(i.extend({},
						a.data), r),
					r
			},
			g.prototype.setChecked = function(e) {
				var a = this;
				a.config;
				a.elem.find("." + s).each(function(a, n) {
					var r = i(this).data("id"),
						l = i(n).children("." + u).find('input[name="layuiTreeCheck"]'),
						t = l.next();
					if("number" == typeof e) {
						if(r == e) return l[0].checked || t.click(), !1
					} else i.inArray(r, e) != -1 && (l[0].checked || t.click())
				})
			},
			l.that = {},
			l.config = {},
			r.reload = function(e, i) {
				var a = l.that[e];
				return a.reload(i),
					l.call(a)
			},
			r.getChecked = function(e) {
				var i = l.that[e];
				return i.getChecked()
			},
			r.setChecked = function(e, i) {
				var a = l.that[e];
				return a.setChecked(i)
			},
			r.render = function(e) {
				var i = new g(e);
				return l.call(i)
			},
			e(n, r)
	});